// Package _99__二叉树的右视图
// Date        : 2022/4/2 19:33
// Version     : 1.0.0
// Author      : 代码小学生王木木
// Email       : 18574945291@163.com
// Description :
package main

// TreeNode
// @Description:
type TreeNode struct {
	Val   int
	Left  *TreeNode
	Right *TreeNode
}

var res []int

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

func rightSideView(root *TreeNode) []int {
	res = []int{}
	dfs(root, 1)
	return res
}

func dfs(root *TreeNode, level int) {
	if root == nil {
		return
	}

	if level > len(res) {
		res = append(res, root.Val)
	}
	//深度优先遍历的精髓就在下面两句中，根节点-》右子树-》左子树
	//注意是先访问右子树，所以每层第一个访问的节点永远是右子树节点
	//同理可以求解出左试图...
	dfs(root.Right, level+1)
	dfs(root.Left, level+1)
}

func main() {

}
